<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>SignatureInfo (POI API Documentation)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="SignatureInfo (POI API Documentation)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SignatureInfo.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.SignatureConfigurable.html" title="interface in org.apache.poi.poifs.crypt.dsig"><span class="strong">PREV CLASS</span></a></li>
<li><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.SignaturePart.html" title="class in org.apache.poi.poifs.crypt.dsig"><span class="strong">NEXT CLASS</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/poi/poifs/crypt/dsig/SignatureInfo.html" target="_top">FRAMES</a></li>
<li><a href="SignatureInfo.html" target="_top">NO FRAMES</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>SUMMARY:&nbsp;</li>
<li><a href="#nested_class_summary">NESTED</a>&nbsp;|&nbsp;</li>
<li>FIELD&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">CONSTR</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">METHOD</a></li>
</ul>
<ul class="subNavList">
<li>DETAIL:&nbsp;</li>
<li>FIELD&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">CONSTR</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">METHOD</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<p class="subTitle">org.apache.poi.poifs.crypt.dsig</p>
<h2 title="Class SignatureInfo" class="title">Class SignatureInfo</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.poi.poifs.crypt.dsig.SignatureInfo</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.SignatureConfigurable.html" title="interface in org.apache.poi.poifs.crypt.dsig">SignatureConfig.SignatureConfigurable</a></dd>
</dl>
<hr>
<br>
<pre>public class <strong>SignatureInfo</strong>
extends java.lang.Object
implements <a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.SignatureConfigurable.html" title="interface in org.apache.poi.poifs.crypt.dsig">SignatureConfig.SignatureConfigurable</a></pre>
<div class="block"><p>This class is the default entry point for XML signatures and can be used for
 validating an existing signed office document and signing a office document.</p>
 
 <p><b>Validating a signed office document</b></p>
 
 <pre>
 OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ);
 SignatureConfig sic = new SignatureConfig();
 sic.setOpcPackage(pkg);
 SignatureInfo si = new SignatureInfo();
 si.setSignatureConfig(sic);
 boolean isValid = si.validate();
 ...
 </pre>
 
 <p><b>Signing an office document</b></p>
 
 <pre>
 // loading the keystore - pkcs12 is used here, but of course jks &amp; co are also valid
 // the keystore needs to contain a private key and it's certificate having a
 // 'digitalSignature' key usage
 char password[] = "test".toCharArray();
 File file = new File("test.pfx");
 KeyStore keystore = KeyStore.getInstance("PKCS12");
 FileInputStream fis = new FileInputStream(file);
 keystore.load(fis, password);
 fis.close();
 
 // extracting private key and certificate
 String alias = "xyz"; // alias of the keystore entry
 Key key = keystore.getKey(alias, password);
 X509Certificate x509 = (X509Certificate)keystore.getCertificate(alias);
 
 // filling the SignatureConfig entries (minimum fields, more options are available ...)
 SignatureConfig signatureConfig = new SignatureConfig();
 signatureConfig.setKey(keyPair.getPrivate());
 signatureConfig.setSigningCertificateChain(Collections.singletonList(x509));
 OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ_WRITE);
 signatureConfig.setOpcPackage(pkg);
 
 // adding the signature document to the package
 SignatureInfo si = new SignatureInfo();
 si.setSignatureConfig(signatureConfig);
 si.confirmSignature();
 // optionally verify the generated signature
 boolean b = si.verifySignature();
 assert (b);
 // write the changes back to disc
 pkg.close();
 </pre>
 
 <p><b>Implementation notes:</b></p>
 
 <p>Although there's a XML signature implementation in the Oracle JDKs 6 and higher,
 compatibility with IBM JDKs is also in focus (... but maybe not thoroughly tested ...).
 Therefore we are using the Apache Santuario libs (xmlsec) instead of the built-in classes,
 as the compatibility seems to be provided there.</p>
 
 <p>To use SignatureInfo and its sibling classes, you'll need to have the following libs
 in the classpath:</p>
 <ul>
 <li>BouncyCastle bcpkix and bcprov (tested against 1.51)</li>
 <li>Apache Santuario "xmlsec" (tested against 2.0.1)</li>
 <li>and slf4j-api (tested against 1.7.7)</li>
 </ul></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested_class_summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.SignaturePart.html" title="class in org.apache.poi.poifs.crypt.dsig">SignatureInfo.SignaturePart</a></strong></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#SignatureInfo()">SignatureInfo</a></strong>()</code>
<div class="block">Constructor initializes xml signature environment, if it hasn't been initialized before</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#confirmSignature()">confirmSignature</a></strong>()</code>
<div class="block">add the xml signature to the document</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.html" title="class in org.apache.poi.poifs.crypt.dsig">SignatureConfig</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#getSignatureConfig()">getSignatureConfig</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.Iterable&lt;<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.SignaturePart.html" title="class in org.apache.poi.poifs.crypt.dsig">SignatureInfo.SignaturePart</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#getSignatureParts()">getSignatureParts</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#initXmlProvider()">initXmlProvider</a></strong>()</code>
<div class="block">Initialize the xml signing environment and the bouncycastle provider</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#postSign(org.w3c.dom.Document, byte[])">postSign</a></strong>(org.w3c.dom.Document&nbsp;document,
        byte[]&nbsp;signatureValue)</code>
<div class="block">Helper method for adding informations after the signing.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/DigestInfo.html" title="class in org.apache.poi.poifs.crypt.dsig">DigestInfo</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#preSign(org.w3c.dom.Document, java.util.List)">preSign</a></strong>(org.w3c.dom.Document&nbsp;document,
       java.util.List&lt;<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/DigestInfo.html" title="class in org.apache.poi.poifs.crypt.dsig">DigestInfo</a>&gt;&nbsp;digestInfos)</code>
<div class="block">Helper method for adding informations before the signing.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#setSignatureConfig(org.apache.poi.poifs.crypt.dsig.SignatureConfig)">setSignatureConfig</a></strong>(<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.html" title="class in org.apache.poi.poifs.crypt.dsig">SignatureConfig</a>&nbsp;signatureConfig)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>byte[]</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#signDigest(byte[])">signDigest</a></strong>(byte[]&nbsp;digest)</code>
<div class="block">Sign (encrypt) the digest with the private key.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#verifySignature()">verifySignature</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#writeDocument(org.w3c.dom.Document)">writeDocument</a></strong>(org.w3c.dom.Document&nbsp;document)</code>
<div class="block">Write XML signature into the OPC package</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="SignatureInfo()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SignatureInfo</h4>
<pre>public&nbsp;SignatureInfo()</pre>
<div class="block">Constructor initializes xml signature environment, if it hasn't been initialized before</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getSignatureConfig()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSignatureConfig</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.html" title="class in org.apache.poi.poifs.crypt.dsig">SignatureConfig</a>&nbsp;getSignatureConfig()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>the signature config</dd></dl>
</li>
</ul>
<a name="setSignatureConfig(org.apache.poi.poifs.crypt.dsig.SignatureConfig)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSignatureConfig</h4>
<pre>public&nbsp;void&nbsp;setSignatureConfig(<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.html" title="class in org.apache.poi.poifs.crypt.dsig">SignatureConfig</a>&nbsp;signatureConfig)</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.SignatureConfigurable.html#setSignatureConfig(org.apache.poi.poifs.crypt.dsig.SignatureConfig)">setSignatureConfig</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.SignatureConfigurable.html" title="interface in org.apache.poi.poifs.crypt.dsig">SignatureConfig.SignatureConfigurable</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>signatureConfig</code> - the signature config, needs to be set before a SignatureInfo object is used</dd></dl>
</li>
</ul>
<a name="verifySignature()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>verifySignature</h4>
<pre>public&nbsp;boolean&nbsp;verifySignature()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>true, if first signature part is valid</dd></dl>
</li>
</ul>
<a name="confirmSignature()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>confirmSignature</h4>
<pre>public&nbsp;void&nbsp;confirmSignature()
                      throws javax.xml.crypto.dsig.XMLSignatureException,
                             javax.xml.crypto.MarshalException</pre>
<div class="block">add the xml signature to the document</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code>javax.xml.crypto.dsig.XMLSignatureException</code></dd>
<dd><code>javax.xml.crypto.MarshalException</code></dd></dl>
</li>
</ul>
<a name="signDigest(byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>signDigest</h4>
<pre>public&nbsp;byte[]&nbsp;signDigest(byte[]&nbsp;digest)</pre>
<div class="block">Sign (encrypt) the digest with the private key.
 Currently only rsa is supported.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>digest</code> - the hashed input</dd>
<dt><span class="strong">Returns:</span></dt><dd>the encrypted hash</dd></dl>
</li>
</ul>
<a name="getSignatureParts()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSignatureParts</h4>
<pre>public&nbsp;java.lang.Iterable&lt;<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.SignaturePart.html" title="class in org.apache.poi.poifs.crypt.dsig">SignatureInfo.SignaturePart</a>&gt;&nbsp;getSignatureParts()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>a signature part for each signature document.
 the parts can be validated independently.</dd></dl>
</li>
</ul>
<a name="initXmlProvider()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initXmlProvider</h4>
<pre>protected static&nbsp;void&nbsp;initXmlProvider()</pre>
<div class="block">Initialize the xml signing environment and the bouncycastle provider</div>
</li>
</ul>
<a name="preSign(org.w3c.dom.Document, java.util.List)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>preSign</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/DigestInfo.html" title="class in org.apache.poi.poifs.crypt.dsig">DigestInfo</a>&nbsp;preSign(org.w3c.dom.Document&nbsp;document,
                 java.util.List&lt;<a href="../../../../../../org/apache/poi/poifs/crypt/dsig/DigestInfo.html" title="class in org.apache.poi.poifs.crypt.dsig">DigestInfo</a>&gt;&nbsp;digestInfos)
                   throws javax.xml.crypto.dsig.XMLSignatureException,
                          javax.xml.crypto.MarshalException</pre>
<div class="block">Helper method for adding informations before the signing.
 Normally <a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#confirmSignature()"><code>confirmSignature()</code></a> is sufficient to be used.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code>javax.xml.crypto.dsig.XMLSignatureException</code></dd>
<dd><code>javax.xml.crypto.MarshalException</code></dd></dl>
</li>
</ul>
<a name="postSign(org.w3c.dom.Document, byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>postSign</h4>
<pre>public&nbsp;void&nbsp;postSign(org.w3c.dom.Document&nbsp;document,
            byte[]&nbsp;signatureValue)
              throws javax.xml.crypto.MarshalException</pre>
<div class="block">Helper method for adding informations after the signing.
 Normally <a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.html#confirmSignature()"><code>confirmSignature()</code></a> is sufficient to be used.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code>javax.xml.crypto.MarshalException</code></dd></dl>
</li>
</ul>
<a name="writeDocument(org.w3c.dom.Document)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>writeDocument</h4>
<pre>protected&nbsp;void&nbsp;writeDocument(org.w3c.dom.Document&nbsp;document)
                      throws javax.xml.crypto.MarshalException</pre>
<div class="block">Write XML signature into the OPC package</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>document</code> - the xml signature document</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>javax.xml.crypto.MarshalException</code></dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SignatureInfo.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureConfig.SignatureConfigurable.html" title="interface in org.apache.poi.poifs.crypt.dsig"><span class="strong">PREV CLASS</span></a></li>
<li><a href="../../../../../../org/apache/poi/poifs/crypt/dsig/SignatureInfo.SignaturePart.html" title="class in org.apache.poi.poifs.crypt.dsig"><span class="strong">NEXT CLASS</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/poi/poifs/crypt/dsig/SignatureInfo.html" target="_top">FRAMES</a></li>
<li><a href="SignatureInfo.html" target="_top">NO FRAMES</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>SUMMARY:&nbsp;</li>
<li><a href="#nested_class_summary">NESTED</a>&nbsp;|&nbsp;</li>
<li>FIELD&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">CONSTR</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">METHOD</a></li>
</ul>
<ul class="subNavList">
<li>DETAIL:&nbsp;</li>
<li>FIELD&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">CONSTR</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">METHOD</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>
                <i>Copyright 2014 The Apache Software Foundation or
        its licensors, as applicable.</i>
            </small></p>
</body>
</html>
